package modelo;

import interfaz.IEntidad;

import java.util.List;

import javax.swing.table.AbstractTableModel;

import manejador.ManejadorDeAula;
import entidad.Aula;
import entidad.Ciclo;


public class ModeloAula extends AbstractTableModel {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String[] encabezados = null;
	private List<IEntidad> aulas = null;
	private static ModeloAula instancia = null;
	private Aula aula = null;
	private ManejadorDeAula manejadorDeAula = null;

	private ModeloAula() {
		encabezados = new String[] { "ID Aula", "Nombre", "Descripcion" };
		manejadorDeAula = ManejadorDeAula.getInstancia();
		aulas = manejadorDeAula.getEntidad();

	}

	public static ModeloAula getInstancia() {
		if (instancia == null) {
			instancia = new ModeloAula();
		}
		return instancia;
	}

	public String getColumnName(int indice) {
		return encabezados[indice];
	}

	@Override
	public int getColumnCount() {

		return encabezados.length;
	}

	@Override
	public int getRowCount() {
		return aulas.size();
	}

	@Override
	public Object getValueAt(int fila, int columna) {
		String retorno = "";
		aula = (Aula) manejadorDeAula.getEntidad().get(fila);
		switch (columna) {
		case 0:
			retorno = String.valueOf(aula.getIdAula());
			break;
		case 1:
			retorno = aula.getNombre();
			break;
		case 2:
			retorno = aula.getDescripcion();
			break;
		}
		return retorno;
	}

	public void agregar(Aula aula) {
		manejadorDeAula.agregar(aula);
		aulas = manejadorDeAula.getEntidad();
		fireTableDataChanged();
	}

	public void eliminar(int fila) {
		aulas = manejadorDeAula.getEntidad();
		fireTableRowsDeleted(fila, fila);
	}

	public void modificar(Ciclo ciclo, int id) {
		manejadorDeAula.modificar(ciclo, id);
		aulas = manejadorDeAula.getEntidad();
		fireTableDataChanged();
	}

	public void actualizarTabla() {
		aulas = manejadorDeAula.getEntidad();
		fireTableDataChanged();
	}

	public void modificar(Aula aula, int id) {
		manejadorDeAula.modificar(aula, id);
		aulas = manejadorDeAula.getEntidad();
		fireTableDataChanged();
	}

}
